# 专属于调度器日志
import logging
import os
from logging.handlers import RotatingFileHandler

LOGGING_FORMAT = "%(asctime)s [%(levelname)s] %(name)s: %(message)s"


def setup_logger(name, log_file, level=logging.INFO):
    """设置日志记录器"""
    # 创建日志目录(如果不存在)
    log_dir = os.path.dirname(log_file)
    if not os.path.exists(log_dir):
        os.makedirs(log_dir)

    # 创建日志记录器
    logger = logging.getLogger(name)
    logger.setLevel(level)

    # 防止日志重复
    logger.propagate = False  # 添加这行来阻止日志传播到父记录器

    # 移除现有的处理器
    for handler in logger.handlers[:]:
        logger.removeHandler(handler)

    # 创建文件处理器
    file_handler = RotatingFileHandler(log_file, maxBytes=10 * 1024 * 1024, backupCount=5, encoding="utf-8")
    file_handler.setLevel(level)

    console_handler = logging.StreamHandler()
    console_handler.setLevel(level)

    # 创建格式化器
    formatter = logging.Formatter(LOGGING_FORMAT)
    file_handler.setFormatter(formatter)
    console_handler.setFormatter(formatter)
    # 添加处理器到日志记录器
    logger.addHandler(file_handler)
    # logger.addHandler(console_handler)

    return logger


# 创建任务调度器日志记录器
scheduler_logger = setup_logger("task_scheduler", "logs/task_scheduler.log")
